【问题标题】:Place marker on Google Maps API once button is pressed按下按钮后在 Google Maps API 上放置标记
【发布时间】:2014-01-07 13:55:14
【问题描述】:

我是 Android 开发的新手,我目前正在尝试让我的应用在按下按钮后将制造商放置在当前位置。 @SuppressLint("NewApi") 公共类 MainActivity 扩展 Activity 实现 LocationListener { 谷歌地图;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);

map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();

map.setMyLocationEnabled(true);

map.setPadding(0,200,0,0);

}

@Override
public void onLocationChanged(Location location) {

MarkerOptions mp = new MarkerOptions();

mp.position(new LatLng(location.getLatitude(), location.getLongitude()));

mp.title("my position");

}

@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub

}


@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub

【问题讨论】:

    标签: android button google-maps-api-2 marker


    【解决方案1】:

    目前它只是每隔一段时间就会丢掉标记。

    => 因为您在 onLocationChanged() 方法中调用了 map.addMarker(mp);

    【讨论】:

    • 哦,你已经给出了答案。我非常尊重你。我读了你的博客好几次。很高兴在这里见到你。我投票赞成你的答案。这是我的尊重。
    • 非常感谢。我已经进行了此编辑,但在 map.addMarker(mp); 之后的第二个大括号仍然存在问题。你能帮忙吗?我不知道为什么会这样。
    • 在按钮添加点击监听器后,你又忘记填写);了。
    • @SatyakiMukherjee 感谢您的客气话,我很高兴知道您阅读了我的博客。
    【解决方案2】:

    请替换代码

    @Override
    public void onLocationChanged(Location location) {
        MarkerOptions mp = new MarkerOptions();
        mp.position(new LatLng(location.getLatitude(), location.getLongitude()));
        mp.title("my position");
        map.addMarker(mp);
    }
    

    @Override
    public void onLocationChanged(Location location) {
        MarkerOptions mp = new MarkerOptions();
        mp.position(new LatLng(location.getLatitude(), location.getLongitude()));
        mp.title("my position");
    
    }
    

    我想你的问题会解决的。

    【讨论】:

      【解决方案3】:

      通过替换此代码尝试此操作。

      public class MainActivity extends Activity implements LocationListener {
          GoogleMap map;
          Button button;
          MarkerOptions mp;
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
              button = (Button) findViewById(R.id.button_id);
              LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
              lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
              map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
              map.setMyLocationEnabled(true);
              map.setPadding(0,200,0,0);
      
              button.setOnClickListener(new View.OnClickListener() {
                  public void onClick(View v) {
      
                      mp.title("my position");
      
                      map.addMarker(mp);
                  }
      
              }
          }
          @Override
          public void onLocationChanged(Location location) {
              mp = new MarkerOptions();
              mp.position(new LatLng(location.getLatitude(), location.getLongitude()));
              mp.title("my position");
          }
      
          @Override
          public void onProviderDisabled(String provider) {
              // TODO Auto-generated method stub
      
          }
      
          @Override
          public void onProviderEnabled(String provider) {
              // TODO Auto-generated method stub
      
          }
      
          @Override
          public void onStatusChanged(String provider, int status, Bundle extras) {
              // TODO Auto-generated method stub
      
          }
      
      }
      

      【讨论】:

      • 非常感谢,没想到回复这么快。但是,当我输入此代码时,Eclipse 似乎在 map.addMarker(mp); 之后的第二个大括号存在问题;我确定我也有正确数量的右花括号。
      • button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { mp.title("我的位置"); map.addMarker(mp); } }); }
      【解决方案4】:

      onLocationChanged() 方法中删除map.addMarker(mp),因为它会在每次触发位置更改事件时向地图添加标记。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-01
        • 1970-01-01
        相关资源
        最近更新 更多