【发布时间】:2015-04-27 16:16:29
【问题描述】:
我制作了一个基本上是 GoogleMaps 的 MapFragment。这个片段在一个活动中被调用,通过片段管理器和片段事务。我现在想调整我的地图以添加一些标记和动态缩放。我现在有点挣扎。也许你们中的一些人可以看看并提供帮助。
MapsActivity.java
public class MapsActivity extends Activity {
Context context;
Button showMap;
Button showMyLocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
context = this;
showMap = (Button)findViewById(R.id.showMap);
showMap.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
MapFragment mf = new MapFragment();
MapFragment.googleMap.addMarker(new MarkerOptions().position(new LatLng(Double.parseDouble("2.900000"), Double.parseDouble("1.55555")))
.title("oh yeah"));
ft.add(R.id.maps_layout, mf);
ft.commit();
}
});
showMyLocation = (Button)findViewById(R.id.showMyLocation);
showMyLocation.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
MapFragment.java
public class MapFragment extends Fragment {
public static GoogleMap googleMap;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.map_fragment_layout, container, false);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
googleMap = ((com.google.android.gms.maps.MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
}
}
更新到上面的代码后,它在堆栈跟踪中给了我这个错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.maps.model.Marker com.google.android.gms.maps.GoogleMap.addMarker(com.google.android.gms.maps.model.MarkerOptions)' on a null object reference
at com.example.dell.exampleapplication.MapsActivity$1.onClick(MapsActivity.java:42)
at android.view.View.performClick(View.java:5156)
at android.view.View$PerformClick.run(View.java:20755)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5834)
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:1388)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
这可能会提供额外的帮助信息。 谢谢你的帮助。
【问题讨论】:
-
我已经找到了很多关于如何添加标记和放大的教程,但我不明白如何控制我的地图的逻辑,如果你能向我解释会有所帮助。
-
只是问你为什么加了“显示我的位置”按钮,谷歌地图已经有了,你只需要启用它
-
我现在正在试验这个,根据您更新的位置动态添加它对我来说似乎很有趣。但这不是这里的问题,问题是如何调用地图以及如何调整它(不了解控制或查找视图的逻辑)。
-
对不起,我不是英语,我很难理解你的意思,你需要如何在片段中使用谷歌地图吗?
-
是的,如何在片段中使用谷歌地图,如何添加标记。我需要那个!
标签: java android dictionary fragment marker