Mapbox와 Android Studio IDE를 사용하여 Android 용지도 가이드를 만들고 있지만 맞춤 infowindow를 다루는 데 어려움을 겪고 있습니다.Mapbox의 맞춤 infowindow에서보기를 확장 할 수 없습니다. (이미지로 getinfowindow 설정하기)
infowindow (내가 마커를 클릭 한 후)를 팽창시키고 싶지만 쉬운 사용자 정의를 위해 XML을 사용하고 싶습니다. (제안을 위해 열었습니다. 아직 다른 각 마커에 대한 이미지). 나는 테스팅을 위해 코드 자체에서 커스터마이징을 사용하고 있지만, 그 퍼포먼스를 위해 XML을 부풀려 싶다.
: 나는 실제로 시험에서 얻고 무엇을쇼 아래 다음 이미지
내가보기 및 다음 이미지를 개발하고 프로토 타입을 보여줍니다 나는 아래의 코드를 개발하고 (코드는 getInfoWindow 기능 내부)Prototype in XML (Where as: ID-Translation-Type)
여기 내가 사용하고 맵 코드의 일부를 다음, 다음 코드는 XML 코드를 보여줍니다.
홈페이지 코드 (Mapa.Java) :
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MapboxAccountManager.start(this,getString(R.string.access_token));
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
mapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(MapboxMap mapboxMap) {
IconFactory iconFactory = IconFactory.getInstance(Mapa.this);
Drawable iconDrawable = ContextCompat.getDrawable(Mapa.this, R.drawable.infoicon);
Icon icon = iconFactory.fromDrawable(iconDrawable);
mapboxMap.setInfoWindowAdapter(new MapboxMap.InfoWindowAdapter() {
@Override
public View getInfoWindow(@NonNull Marker marker) {
View v = getLayoutInflater().inflate(R.layout.janela_infowindow, null);
TextView titulo = (TextView) v.findViewById(R.id.titulo);
TextView desc = (TextView) v.findViewById(R.id.descricao);
titulo.setText(marker.getTitle());
desc.setText(marker.getSnippet());
titulo.setTextColor(Color.WHITE);
desc.setTextColor(Color.WHITE);
v.setBackgroundColor(Color.rgb(27,77,62));
v.setPadding(10, 10, 10, 10);
return v;
}
});
mapboxMap.addMarker(new MarkerOptions()
.position(new LatLng(-15.76363, -47.86949))
.title("ICC Centro")
.snippet(getString(R.string.desc_ICC_Centro))
.icon(icon));
mapboxMap.addMarker(new MarkerOptions()
.position(new LatLng(-15.7629936, -47.86717415))
.title("Reitoria")
.snippet(getString(R.string.desc_Reitoria))
.icon(icon));
mapboxMap.addMarker(new MarkerOptions()
.position(new LatLng(-15.76196106, -47.87008166))
.title("FAU")
.snippet(getString(R.string.desc_FAU))
.icon(icon));
}
});
}
XML 코드 (janela_infowindow.xml) :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="200dp"
android:layout_height="270dp"
android:weightSum="1">
<ImageView
android:layout_width="200dp"
android:layout_height="0dp"
android:id="@+id/imagem"
android:adjustViewBounds="true"
android:layout_gravity="end"
android:contentDescription="@string/nome_local"
android:layout_weight="0.11" />
<TextView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_marginTop="-30dp"
android:gravity="center"
android:textAlignment="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/titulo"
android:typeface="serif"
android:textStyle="bold"/>
<TextView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/descricao" />
편집 : 나는 경우 확실하지 않다 이것은 맞지만, 설정할 때마다 높이, 너비
FATAL EXCEPTION: main
Process: afinal.projeto.unb.guiadoaluno, PID: 8979
java.lang.NullPointerException: Attempt to write to field 'int android.view.ViewGroup$LayoutParams.height' on a null object reference
at afinal.projeto.unb.guiadoaluno.Mapa$1$1.getInfoWindow(Mapa.java:87)
at com.mapbox.mapboxsdk.annotations.Marker.showInfoWindow(Marker.java:165)
at com.mapbox.mapboxsdk.maps.MapboxMap.selectMarker(MapboxMap.java:1295)
at com.mapbox.mapboxsdk.maps.MapView$GestureListener.onSingleTapConfirmed(MapView.java:1792)
at android.view.GestureDetector$GestureHandler.handleMessage(GestureDetector.java:280)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5940)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1389)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1184)
편집 2 : 또는 이미지을 설정, 그것은 나에게이 오류 메시지를 제공합니다 (이 메시지 오류가 높이와 너비를 설정 한 후 주어진) 좋아, 그래서 '내가 할 수있는 것을 나는 사실에 좌절하고 tInfoWindow 안에 이미지를 넣으면 이미지를 어떻게 설정하든 문제가되지 않습니다. 항상 같은 오류 메시지입니다. 나는 그것이 이미지를 설정할 수 있다는 것을 알고있다. 그러나 자바 파일 안에 객체를 생성 할 때만 가능하다. 팽창 된 XML에서 이미지를 바꾸고 싶을 때 같은 것을 할 수 없다. 이것은 내가 상관없이 내가 선언 무엇을 얻을 메시지, 설정하거나 자바 파일 내부의 이미지를 사용할 수 있습니다 :
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference
을 누군가가 그것을 해결하는 방법을 알고있는 경우에, 나는 그 스택 오버플로 여기에 내 질문을 닫을 것이라고 믿는다.
XML 파일로 정보 파일을 부 풀리는 대신 자바 파일 내부의 정보 창을 편집하려고 할 때 치명적인 메시지가 추가되었습니다. –