如何打开地图活动并设置其他活动的位置?

问题描述:

我是Android编程新手,我尝试使用Android Studio创建应用程序。如何打开地图活动并设置其他活动的位置?

我有一个列表视图,其中包含几个项目。一旦一个项目被点击,它会显示一个警告对话框,其中包含被点击项目的详细信息。所有这些都工作得很好。问题是,警报对话框上有一个按钮,它应该导致我创建的地图活动指向从调用它的活动中给出的确切位置。它会调用并打开地图活动,但不会将焦点放到所单击项目的位置。相反,如果GPS未启用,它将转到我设置的默认标记,如果GPS启用,则转到用户的位置。

任何帮助将不胜感激。先谢谢你。

我试图代码的这些行,但而不是打开地图活动我做了,它会打开谷歌地图应用程序:

Uri newIntentUri = Uri.parse("geo:13.621085324664428, 123.21271363645793?z=20"); 
Intent intent = new Intent(Intent.ACTION_VIEW, newIntentUri); 
startActivity(intent); 
+0

你能提供一些显示问题的代码吗?请参阅https://*.com/help/mcve –

+0

@TimPenner我更新了我的帖子。我在某处添加了一些行。但它改为打开Goog​​le地图应用程序。它将重点放在我想要的位置,但我想在我制作的应用程序中的地图活动中显示它。 –

好吧,我发现这个代码的地方,现在它的正常工作。

我加入这个组的其他活动代码的调用与坐标图:(在我的情况,我把它命名为schoolsList.java和我的地图nagaCityMapping.java)

double newLat = 13.621085324664428; 
double newLong = 123.21271363645793; 

LatLng fromPosition = new LatLng(newLat,newLong); 

Bundle args = new Bundle(); 
args.putParcelable("longLat_dataProvider", fromPosition); 

Intent i = new Intent(schoolsList.this, nagaCityMapping.class); 
i.putExtras(args); 
startActivity(i); 

,然后我收到了像我这样的地图活动的意图:

Intent i = getIntent(); 
LatLng ll = i.getParcelableExtra("longLat_dataProvider"); 

if (i != null && ll != null) 
{ 
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(ll.latitude, ll.longitude), 20)); 

    LatLng defaultLoc = new LatLng(ll.latitude, ll.longitude); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(defaultLoc)); 
} 

docs,该ACTION_VIEW意图将执行你所看到的动作:

公共静态最终字符串ACTION_VIEW

在API级别1 活动操作:显示数据给用户。这是对数据执行的最常见操作 - 这是您可以在一段数据上使用的通用操作,以获得最合理的事情发生。例如,当用于联系人条目时,它将查看条目;当在mailto:URI上使用时,它将显示一个填充了由URI提供的信息的撰写窗口;当与tel:URI一起使用时,它将调用拨号程序。

请参阅adding maps to your applicationthis example Android的教程:

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 
    } 

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

     // Add a marker in Sydney, Australia, and move the camera. 
     LatLng sydney = new LatLng(-34, 151); 
     mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
    } 
} 

的基础是explained here

+0

我已经有一个地图活动,它正在工作,我实际上要问的是如何从另一个活动中调用此地图(我在我的应用程序中制作的地图),并将焦点设置到我想要的位置。 –

+0

我明白了。我发布了我的答案,我终于开始工作了。不管怎么说,还是要谢谢你。 –