【问题标题】:How to set several specific locations in Google Map?如何在谷歌地图中设置几个特定的​​位置?
【发布时间】:2016-11-27 10:26:48
【问题描述】:

我想为德黑兰的自行车站制作一个安卓应用程序。为此,我需要在地图上显示特定的静态位置,如下所示:

我尝试了几个 Github 的库,但都没有成功。我还添加了一个额外的位置(double latitude1 = 35.747394; double longitude1 = 51.267577;),但位置标记没有出现在地图上。

如果有人可以帮助我,我将不胜感激。

这是我的代码:

MainActivity.java

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

import com.google.android.gms.maps.MapFragment;
import com.playpersia.bicyclemap.R;

import com.google.android.gms.maps.GoogleMap;
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 {

    double latitude1 = 35.747394;
    double longitude1 = 51.267577;
    // Google Map
    private GoogleMap googleMap;

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);

        Uri gmmIntentUri = Uri.parse("geo:35.694677, 51.394871");
        Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
        mapIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //***Change Here***
        mapIntent.setPackage("com.google.android.apps.maps");

        if (mapIntent.resolveActivity(getPackageManager()) != null) {
            startActivity(mapIntent);
            finish();

        }

        try {

            initilizeMap();


            MarkerOptions markerOptions1 = new MarkerOptions().position(
                new LatLng(latitude1, longitude1)).title("بوستان جوانمردان");

            googleMap.addMarker(markerOptions1);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @
    Override
    protected void onResume() {
        super.onResume();
        initilizeMap();
    }

    private void initilizeMap() {

        if (googleMap == null) {
            SupportMapFragment mapFragment = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
                R.id.map));

            if (googleMap != null) {
                Toast.makeText(getApplicationContext(), "خطا", Toast.LENGTH_LONG).show();
            }


        }

    }

}

【问题讨论】:

  • 到底是什么问题?你不能添加几个标记?还是地图没有显示? ,查看您的代码,我发现您只添加了一个标记
  • @youzking 是的,我刚刚添加了一个位置,但它没有显示那个位置
  • 添加一个标记是需要注意的,你必须将地图的相机移动到添加的标记,你的标记可以被添加但​​它只是不可见,添加标记后尝试添加这个:@987654325 @
  • 没用@youzking

标签: java android google-maps dictionary location


【解决方案1】:

查看Google Places API 文档。它允许您查询各种类别的地点信息,例如:场所、著名景点、地理位置等。您可以通过邻近度或文本字符串来搜索地点。

使用Nearby Search 可以搜索指定区域内的地点。您可以通过提供关键字或指定您要搜索的地点类型来优化您的搜索请求。这是list of supported types

以下形式的示例 HTTP URL:

https://maps.googleapis.com/maps/api/place/nearbysearch/output?parameters

其中output 可以是以下任一值:

  • json(推荐)表示以 JavaScript Object Notation (JSON) 输出
  • xml 表示输出为 XML

以下示例是对澳大利亚悉尼某点半径 500m 范围内“transit_station”类型地点的搜索请求:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&type=transit_station&key=YOUR_API_KEY

查看这些相关链接和tutorial:

希望这会有所帮助!

【讨论】:

  • 我使用了教程链接,它解决了我的问题谢谢
【解决方案2】:

我希望您尝试在自己的应用程序中显示地图。如果您阅读日志猫,就会发现错误。 googleMap 变量未初始化。所以如果添加标记它会抛出空指针异常。您应该使用 getMapAsync 回调来初始化 googleMap 变量,然后您可以添加标记。如果您的地图显示并且添加标记不起作用,这将起作用。如果地图没有显示 api 密钥的问题。更正它并删除意图代码并尝试此操作。

【讨论】:

  • 我更正了 api 密钥,现在它给了我这个错误:java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.maps.model.Marker com.google. android.gms.maps.GoogleMap.addMarker(com.google.android.gms.maps.model.MarkerOptions)' 在空对象引用 07-24 21:40:04.931 19095-19095/com.playpersia.bicyclemap
猜你喜欢
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 2014-02-18
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多