私は別の断片から地図上にマーカーを投稿しようとしています。あなたがボタンをタップすると、フラグメントマネージャーがあなたを地図の断片に連れて行き、新しく配置されたマーカーを表示します。しかし、私はいくつかの(nullPointer)問題があります。マーカーを別のフラグメントからGoogleマップに投稿するにはどうすればよいですか?
マップがロードされる前にマーカーを追加しようとしているため、nullポインタが表示されます。私はマップが準備ができているときにマーカーを追加する方法を見つけるためにいくつかの方法を試しましたが、何も動かすことができませんでした。
マップが準備されているときにマーカーを追加するクリーンなソリューションはありますか?
また、次のエラーが表示されます。 java.lang.NullPointerException:仮想メソッド 'com.google.android.gms.maps.model.Marker com.google.android.gms.maps.GoogleMapを呼び出そうとしています。 .addMarker nullオブジェクト参照
EDIT上(com.google.android.gms.maps.model.MarkerOptions)」:私はマーカー情報(緯度経度)を取得しています方法は、私が見つけメソッドでありますスタックオーバーフロー。それは、EditTextからアドレスを取得し、そこから緯度と経度のポイントを取得します。私はそれを「マーカー」と「ポイント」に格納するために使用します。方法は以下にあります...
更新:これはもはや私にnull例外を与えません。 MapFragmentはロードされますが、表示されるマーカーはありません。
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
setUpSpinners();
Button button = (Button) getActivity().findViewById(R.id.postButton);
button.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
EditText editEvent = (EditText) getActivity().findViewById(R.id.map_location);
point = getLocationFromAddress(getActivity()
.getApplicationContext(), editEvent.getText().toString());
marker = new MarkerOptions().position(
new LatLng(point.latitude, point.longitude)).title("New Marker");
FragmentManager fm = getFragmentManager();
fm.beginTransaction().replace(R.id.content_frag, new GoogleMapFragment()).commit();
}
}
);
}
public void addThisMarker(GoogleMap googleMap) {
googleMap.addMarker(marker
.position(point)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW)));
}
そして、私のMapFragmentクラスで:私のPostFragmentクラスで
@Override
public void onMapReady(GoogleMap googleMap) {
globalMap = googleMap;
setUpMap(); //just enabling some map properties here
PostFragment x = new PostFragment();
x.addThisMarker(globalMap);
}
**そして、これは私がアドレスから緯度経度を取得するために、PostFragmentで、使用している方法であり、
public LatLng getLocationFromAddress(Context context, String strAddress) {
Geocoder coder = new Geocoder(context);
List<Address> address;
LatLng p1 = null;
try {
address = coder.getFromLocationName(strAddress, 5);
if (address == null) {
return null;
}
Address location = address.get(0);
location.getLatitude();
location.getLongitude();
p1 = new LatLng(location.getLatitude(), location.getLongitude());
} catch (Exception ex) {
ex.printStackTrace();
}
return p1;
}
私はそれを試みましたが、まだnullポインタの例外が発生しています。私は、私のポストフラグメント(ボタンだけのフラグメント)にマーカーを追加するメソッドを作りました。このメソッドはGoogleMapパラメーターを持っています。 そして、私はmap = googleMapを設定した場所の下にそのメソッドを置いています。 (パラメータに 'map'をつけて)。それでも私には同じ例外が与えられます。 – SaltySea
コードを投稿できますか? – antonio
ペーストビンに掲示してここにリンクしたり、ルールに違反していればいいのですか? – SaltySea