通过意图将地址传递给 Google 地图活动:

Posted

技术标签:

【中文标题】通过意图将地址传递给 Google 地图活动:【英文标题】:Passing a address via intent to Google map activity: 【发布时间】:2018-05-07 15:00:57 【问题描述】:

我正在开发一个获取用户选择的事件地址的应用程序。地址是一个字符串,从一个活动传递到一个谷歌地图活动。我知道该字符串到达​​地图活动中,因为我使用了 Toast 来显示它。 但是,当我尝试获取地址的经度和纬度时,它不起作用。除非我硬编码并寻址到 addresses = geocoder.getFromLocationName('Dublin,Ireland', 1); 中,否则 try catch 块似乎不会执行

任何帮助将不胜感激。

public class EventMapActivity extends FragmentActivity implements OnMapReadyCallback 

private GoogleMap mMap;
private Intent MyTournamentsActivityIntent;
private String eventAddress = "";
double latitude = 0;
double longitude = 0;

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_event_map);
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);

    MyTournamentsActivityIntent = getIntent();
    eventAddress = MyTournamentsActivityIntent.getStringExtra("event_location");
    Toast.makeText(getApplicationContext(),"Address from intent" + eventAddress,Toast.LENGTH_SHORT).show();
//end onCreate


@Override
public void onMapReady(GoogleMap googleMap) 
    mMap = googleMap;

    Geocoder geocoder = new Geocoder(this);
    List<Address> addresses;

    try

        /*
        This doesnt execute unless I hard code the eventAddress
         */
        addresses = geocoder.getFromLocationName(eventAddress, 1);
        latitude= addresses.get(0).getLatitude();
        longitude= addresses.get(0).getLongitude();
        Toast.makeText(getApplicationContext(),String.valueOf(latitude) + " " + String.valueOf(longitude) ,Toast.LENGTH_SHORT).show();
    catch (Exception e)
    
        e.printStackTrace();
    

    LatLng eventLocation = new LatLng(latitude, longitude);
    mMap.addMarker(new MarkerOptions().position(eventLocation).title("Your Event"));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(eventLocation));
//end onMapReady

public void setEventAddress(String eventAddress) 
    this.eventAddress = eventAddress;

//结束类

【问题讨论】:

【参考方案1】:

改变这个:

 eventAddress = MyTournamentsActivityIntent.getStringExtra("event_location");

到这里:

 eventAddress = getIntent().getStringExtra("event_location");

并致电mapFragment.getMapAsync(this);

 eventAddress = getIntent().getStringExtra("event_location");
 mapFragment.getMapAsync(this);

得到eventAddress之后

【讨论】:

感谢您的回复。我尝试了下面的方法,但它似乎仍然不起作用。 SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); eventAddress = getIntent().getStringExtra("event_location"); mapFragment.getMapAsync(this); 您是否正确发送了之前活动的额外内容? 这就是我发送它的方式。它是一个 ListActivity 类。它有一个自定义数组适配器,如果单击一个项目,它会执行以下操作:Intent intent = new Intent(MyTournamentsActivity.this, EventMapActivity.class); intent.putExtra("event_location",userEventList.get(position).getAddress()); startActivity(intent);

以上是关于通过意图将地址传递给 Google 地图活动:的主要内容,如果未能解决你的问题,请参考以下文章

当意图传递给其他活动时,为啥从 parcelable 中得到错误的值?

将捆绑包/意图传递给另一个活动?

Android:意图通过通知传递给活动......我在意图中没有得到正确的额外内容

启动谷歌地图意图后返回活动

使用意图将变量传递给另一个android活动

如何将收到的意图传递给另一个应用程序/活动?