我是Android编程新手,我正在尝试使用Android Studio创建应用程序。
我有一个列表视图,其中包含多个项目。单击一个项目后,它会显示一个警告对话框,其中包含所单击项目的详细信息。所有这些都完美无缺。问题是,警报对话框上有一个按钮,它应该导致我创建的地图活动指向从调用它的活动给出的确切位置。它调用并打开地图活动,但不会将焦点放在单击项目的位置。相反,如果未启用GPS,则会转到我设置的默认标记,如果已启用GPS,则转到用户的位置。
非常感谢任何帮助。提前谢谢。
我尝试了这些代码行,但不是打开我制作的地图活动,而是打开Google地图应用程序:
Uri newIntentUri = Uri.parse("geo:13.621085324664428, 123.21271363645793?z=20");
Intent intent = new Intent(Intent.ACTION_VIEW, newIntentUri);
startActivity(intent);
答案 0 :(得分:0)
根据docs,ACTION_VIEW意图将执行您所看到的操作:
public static final String ACTION_VIEW
在API级别1中添加 活动操作:向用户显示数据。这是对数据执行的最常见操作 - 您可以在一段数据上使用通用操作来获得最合理的操作。例如,当在联系人条目上使用时,它将查看条目;当在mailto:URI上使用时,它将显示一个填充了URI提供的信息的撰写窗口;当与tel:URI一起使用时,它将调用拨号程序。
请参阅adding maps to your application或this 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
答案 1 :(得分:0)
好的,我在某个地方找到了这个代码,现在它工作正常。
我在另一个用坐标调用地图的活动中添加了这组代码:(在我的例子中,我把它命名为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));
}