2016-07-23 199 views
0

我想为德黑兰的自行车站制作Android应用程序。为此,我需要在地图上显示具体的和静态的位置是这样的:如何在Google Map中设置多个特定位置?

google map locations example

我试过几个库从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(); 
      } 


     } 

    } 

} 
+0

究竟是什么问题?你不能添加几个标记?或者地图没有显示? ,看看你的代码,我看到你只添加了一个标记 –

+0

@youzking是啊我刚刚添加了一个位置,但它没有显示一个位置 – Hadis

+0

添加一个标记是注意事项你必须将地图的相机移动到添加标记后,可以添加标记,但它不可见,请在添加标记后添加此标记: 'LatLng latLng = new LatLng(latitude1,longitude1); CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng,10); map.animateCamera(cameraUpdate);' –

回答

0

检查Google Places API文档。它允许您查询各种类别的地点信息,例如:机构,重要的兴趣点,地理位置等。您可以通过邻近或文本字符串搜索地点。

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

Sample HTTP URL of the following form:

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

where output may be either of the following values:

  • json (recommended) indicates output in JavaScript Object Notation (JSON)
  • xml indicates output as XML

下面的例子是在悉尼的一个点的方圆500公尺内型“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

希望这会有所帮助!

+0

我使用了教程链接,它解决了我的问题 谢谢 – Hadis

0

我希望你想显示在您的应用程序映射itself.You会发现这个错误,如果你读你的日志猫。 googleMap变量未初始化。所以如果添加标记,它会抛出空指针异常。您应该使用getMapAsync回调来初始化googleMap变量,然后您可以添加标记。如果您的地图显示并添加标记不起作用,这将起作用。如果map没有显示api key的问题。纠正并删除意图代码,并尝试这一点。

+0

我纠正了API密钥,现在它给了我这个错误: java.lang.NullPointerException:尝试调用虚拟方法'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 – Hadis

相关问题