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

时间:2016-03-08 17:42:58

标签: javascript android jquery google-maps gps

我是Android编程新手,我正在尝试使用Android Studio创建应用程序。

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

非常感谢任何帮助。提前谢谢。

我尝试了这些代码行,但不是打开我制作的地图活动,而是打开Goog​​le地图应用程序:

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

2 个答案:

答案 0 :(得分:0)

根据docs,ACTION_VIEW意图将执行您所看到的操作:

  

public static final String 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

答案 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));
}