Android 在谷歌地图v2安卓上添加标记
我跟着教程走了Android 在谷歌地图v2安卓上添加标记,android,google-maps,marker,Android,Google Maps,Marker,我跟着教程走了 https://developers.google.com/maps/documentation/android/start 我成功地将地图加载到我的应用程序中。现在我想使用纬度和经度在我的应用程序中添加一些标记。我该怎么做?我尝试了一些东西,但没有成功。我试过的代码如下 这就是我要做的。但是我得到了一个空点异常。原因是什么 GoogleMap googleMap = null; MapFragment fm = (MapFragment) (activ
https://developers.google.com/maps/documentation/android/start
我成功地将地图加载到我的应用程序中。现在我想使用纬度和经度在我的应用程序中添加一些标记。我该怎么做?我尝试了一些东西,但没有成功。我试过的代码如下
这就是我要做的。但是我得到了一个空点异常。原因是什么
GoogleMap googleMap = null;
MapFragment fm = (MapFragment) (activity.getFragmentManager())
.findFragmentById(R.id.map);
googleMap = fm.getMap();
double latitude = 7.421226;
double longitude =80.401264 ;
// create marker
MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("Hello Maps ");
// adding marker
googleMap.addMarker(marker);
我的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/filmhall"
android:background="@color/grey" >
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.SupportMapFragment"/>
</LinearLayout>
检查此项使用此方法查看一下我们正在谷歌地图上添加的标记
mMap.addMarker(new MarkerOptions().position(new LatLng(22.7253, 75.8655)).title("Indore"));
下面是一个例子
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class BasicMapDemoActivity extends FragmentActivity
{
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.basic_demo);
setUpMapIfNeeded();
}
@Override
protected void onResume() {
super.onResume();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded()
{
if (mMap == null)
{
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
if (mMap != null)
{
setUpMap();
}
}
}
private void setUpMap()
{
mMap.addMarker(new MarkerOptions().position(new LatLng(22.7253, 75.8655)).title("Indore"));
// here is marker Adding code
}
}
这里是我的代码(它在地图中有4个图标,你只需像在主活动中调用片段一样调用这个类,它就会工作,记住:在drawable中创建一个图片,并将其命名为“atmpin2.png”):
包片段;
导入com.einstein.atm.R;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.os.Bundle;
导入android.util.DisplayMetrics;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Toast;
导入com.google.android.gms.maps.CameraUpdateFactory;
导入com.google.android.gms.maps.GoogleMap;
导入com.google.android.gms.maps.MapFragment;
导入com.google.android.gms.maps.model.BitmapDescriptorFactory;
导入com.google.android.gms.maps.model.LatLng;
导入com.google.android.gms.maps.model.MarkerOptions;
导入com.google.android.gms.maps.model.Marker;
公共类FragMapsGoogle扩展MapFragment{
谷歌地图;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
View rootView=super.onCreateView(充气机、容器、,
保存状态);
map=getMap();
LatLng place=新LatLng(21105.8);
地图。移动摄像机(CameraUpdateFactory.newLatLngZoom(地点,14.0f));
DisplayMetrics DisplayMetrics=新的DisplayMetrics();
int w,h;
这个.getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
h=displaymetrics.heightPixels;
w=displaymetrics.widthPixels;
位图bmp=BitmapFactory.decodeResource(
getResources(),R.drawable.atmpin2);
float h2w2=(float)bmp.getHeight()/bmp.getWidth();
GoogleMap=this.getMap();
Toast.makeText(this.getActivity(),“大小屏幕:+h+“X”+w+”+h2w2,Toast.LENGTH\u LONG.show();
对于(int i=1;i<5;i++){
MarkerOptions mkop=新的MarkerOptions();
位置=新板条(21+i*0.00055、105.8+i*0.00054);
mkop.位置(地点);
Marker maker=map.addMarker(mkop);
maker.setIcon(BitmapDescriptorFactory.fromBitmap(Bitmap.createScaledBitmap(bmp,w/20+5,(int)((w/20+5)*h2w2),true));
}
返回rootView;
}
}
//河内:21.0226967105.8369637
有任何logcat错误我没有足够的声誉离开这就是为什么我回答问题的原因请检查我在我的项目中使用过地图,我使用过请调试项目我认为googleMap是空的检查它是否为空你应该使用getMapAsync(listener)
而不是getMap()
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class BasicMapDemoActivity extends FragmentActivity
{
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.basic_demo);
setUpMapIfNeeded();
}
@Override
protected void onResume() {
super.onResume();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded()
{
if (mMap == null)
{
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
if (mMap != null)
{
setUpMap();
}
}
}
private void setUpMap()
{
mMap.addMarker(new MarkerOptions().position(new LatLng(22.7253, 75.8655)).title("Indore"));
// here is marker Adding code
}
}
// latitude and longitude
double latitude = ;
double longitude = ;
// create marker
MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("Hello Maps ");
// adding marker
googleMap.addMarker(marker);
package fragments;
import com.einstein.atm.R;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Marker;
public class FragMapsGoogle extends MapFragment {
GoogleMap map;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = super.onCreateView(inflater, container,
savedInstanceState);
map = getMap();
LatLng place = new LatLng(21, 105.8);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(place, 14.0f));
DisplayMetrics displaymetrics = new DisplayMetrics();
int w,h;
this.getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
h = displaymetrics.heightPixels;
w = displaymetrics.widthPixels;
Bitmap bmp = BitmapFactory.decodeResource(
getResources(), R.drawable.atmpin2);
float h2w2 = (float)bmp.getHeight()/bmp.getWidth();
GoogleMap map = this.getMap();
Toast.makeText(this.getActivity(), "Size Screen: "+h+"X"+w+" "+h2w2, Toast.LENGTH_LONG).show();
for (int i = 1; i < 5; i++) {
MarkerOptions mkop = new MarkerOptions();
place = new LatLng(21+i*0.00055, 105.8+i*0.00054);
mkop.position(place);
Marker maker = map.addMarker(mkop);
maker.setIcon(BitmapDescriptorFactory.fromBitmap(Bitmap.createScaledBitmap(bmp, w/20+5, (int)((w/20+5)*h2w2), true)));
}
return rootView;
}
}
// Ha Noi: 21.0226967,105.8369637