2015-11-23 24 views
2

我目前正在使用Google Maps API,并试图将具有标记的GEOJSON文件作为图层连接到地图。无法解析符号'GeoJsonLayer'

我从文档,并且我目前正在使用的线路是:

GeoJsonLayer layer = new GeoJsonLayer(getMap(), R.raw.geoJsonFile, 
     getApplicationContext()); 

的错误是Cannot resolve symbol 'GeoJsonLayer'

我已经加入编译org.json:json:20090211到我的依赖,但这并没有解决问题。

我使用Android Studio编码Android OS。

请帮忙吗?由于

编辑:

类代码:

package com.example.macbookair........; 

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.MapFragment; 
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; 
import com.google.maps.android.geojson.GeoJsonLayer; 

import org.json.JSONException; 

import java.io.IOException; 

public class Maps extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 
    private GeoJsonLayer layer1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 
     // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 

    } 

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


     /* MapFragment mapFrag = (MapFragment) getFragmentManager().findFragmentById(R.id.map); 
     try { 
      GeoJsonLayer layer1 = new GeoJsonLayer(mapFrag.getMap(), R.raw.mapjson, 
        getApplicationContext()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     layer1.addLayerToMap(); */ 
     // Add a marker in Sydney and move the camera 
    } 
} 

代码作品的评论部分,但使应用程序崩溃,没有注释代码映射工作正常,并加载罚款我的设备上。

+0

你有你的类文件的正确/所需的进口? – ChrisStillwell

+0

哪些是正确的和/或必需的导入文档中没有字面意思,我无法在Google上找到关于GeoJson for Android的其他内容? – AdheelB

+0

'import com.google.maps.android.geojson.GeoJsonLayer;'他们在这里有一个演示活动:https://github.com/googlemaps/android-maps-utils/tree/dba3b0d8a9657ebab8c67a4f50bd731437a229bc/demo – ChrisStillwell

回答

4

您需要在您的build.gradle文件中添加google-maps-utils

dependencies { 
    compile 'com.google.maps.android:android-maps-utils:x.y.z' 
} 

其中x.y.z是版本。最新的是:0.4

您还可以根据需要在google-maps依赖(和播放服务基地),并可以在文件的build.gradle中添加所列:

dependencies { 
    compile 'com.google.maps.android:android-maps-utils:x.y.z' 
    compile 'com.google.android.gms:play-services-maps:8.3.0' 
    compile 'com.google.android.gms:play-services-base:8.3.0' 
} 

如果你想全部来自游戏业务的库,你可以跳过这两个依赖,并添加所有游戏业务的依赖,就像这样:

compile 'com.google.android.gms:play-services:8.3.0' 

请记住,这将增加所有播放服务库到您的APK,而这可能会导致一个64K方法的限制,更大的APK大小。

Reference to install play-services

Reference to Google Maps Utils

+0

虽然现在来自同一行,但getMap和geoJsonFile不起作用 – AdheelB

+0

getMap()函数返回什么? api的地图吗?我认为这应该是'map.getMap()'。但似乎是另一个问题。 –

+0

它说无法解析方法getMap()并且不能解析符号geoJsonFile,getMap函数应该返回地图我相信..它在Google地图的文档中找到JSON图层 – AdheelB