android 应用中未添加 KML 图层
KML layer not being added in android app
我正在尝试在地图上添加一个包含 2000 个位置的图层。代码应该可以工作,它显示了添加 KML 图层的 try 块已完成,但地图上没有显示任何内容。
经进一步检查,我相信这一定是我在 google 地图中生成的 KML 文件的问题。这是因为我下载的示例 KML 文件运行良好,而不是我生成的文件?
public class MapsActivity 扩展 FragmentActivity 实现 OnMapReadyCallback {
private GoogleMap mMap;
private boolean gotLocation = false;
GPSTracker gps;
double latitude;
double longitude;
@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);
Intent i = getIntent();
gps = new GPSTracker(this);
latitude = gps.getLatitude();
longitude = gps.getLongitude();
Toast.makeText(this, "WE HAVE GOT YOUR LOCATION: LATITUDE = " + latitude + "LONGITUDE = " + longitude, Toast.LENGTH_LONG).show();
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setMyLocationEnabled(true);
mMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)).title("Current Position"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(latitude, longitude)));
mMap.animateCamera(CameraUpdateFactory.zoomTo(10));;
try {
KmlLayer layer = new KmlLayer(mMap, R.raw.vha, getApplicationContext());
layer.addLayerToMap();
Log.v("Maps", "We should have added layer");
} catch (XmlPullParserException e) {
e.printStackTrace();
Log.v("Maps", "Pull parser exception");
} catch (IOException e) {
e.printStackTrace();
Log.v("Maps", "IO exception");
}
}
}
<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns='http://www.opengis.net/kml/2.2'>
<Document>
<name>VHA</name>
<description><![CDATA[]]></description>
<Folder>
<name>VHA</name>
<Placemark>
<name>Aberdeen VA Clinic</name>
<description><![CDATA[Address: 2301 8th Ave. NE, Suite 225 Aberdeen, SD 57401<br>State: SD<br>Phone: 605-229-3500<br>Zip: 57401]]></description>
<styleUrl>#icon-1899-0288D1</styleUrl>
<ExtendedData>
<Data name='Address'>
<value>2301 8th Ave. NE, Suite 225 Aberdeen, SD 57401</value>
</Data>
<Data name='State'>
<value>SD</value>
</Data>
<Data name='Phone'>
<value>605-229-3500</value>
</Data>
<Data name='Zip'>
<value>57401</value>
</Data>
</ExtendedData>
<address>2301 8th Ave. NE, Suite 225 Aberdeen, SD 57401</address>
</Placemark>}
好的,对于遇到此问题的任何其他人,google 可以从地址的 csv 文件创建 KML 文件,但它无法读取它。您必须先将 csv 文件中的地址转换为 lat/long,然后再创建 kml 文件。
我正在尝试在地图上添加一个包含 2000 个位置的图层。代码应该可以工作,它显示了添加 KML 图层的 try 块已完成,但地图上没有显示任何内容。
经进一步检查,我相信这一定是我在 google 地图中生成的 KML 文件的问题。这是因为我下载的示例 KML 文件运行良好,而不是我生成的文件?
public class MapsActivity 扩展 FragmentActivity 实现 OnMapReadyCallback {
private GoogleMap mMap;
private boolean gotLocation = false;
GPSTracker gps;
double latitude;
double longitude;
@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);
Intent i = getIntent();
gps = new GPSTracker(this);
latitude = gps.getLatitude();
longitude = gps.getLongitude();
Toast.makeText(this, "WE HAVE GOT YOUR LOCATION: LATITUDE = " + latitude + "LONGITUDE = " + longitude, Toast.LENGTH_LONG).show();
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setMyLocationEnabled(true);
mMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)).title("Current Position"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(latitude, longitude)));
mMap.animateCamera(CameraUpdateFactory.zoomTo(10));;
try {
KmlLayer layer = new KmlLayer(mMap, R.raw.vha, getApplicationContext());
layer.addLayerToMap();
Log.v("Maps", "We should have added layer");
} catch (XmlPullParserException e) {
e.printStackTrace();
Log.v("Maps", "Pull parser exception");
} catch (IOException e) {
e.printStackTrace();
Log.v("Maps", "IO exception");
}
}
}
<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns='http://www.opengis.net/kml/2.2'>
<Document>
<name>VHA</name>
<description><![CDATA[]]></description>
<Folder>
<name>VHA</name>
<Placemark>
<name>Aberdeen VA Clinic</name>
<description><![CDATA[Address: 2301 8th Ave. NE, Suite 225 Aberdeen, SD 57401<br>State: SD<br>Phone: 605-229-3500<br>Zip: 57401]]></description>
<styleUrl>#icon-1899-0288D1</styleUrl>
<ExtendedData>
<Data name='Address'>
<value>2301 8th Ave. NE, Suite 225 Aberdeen, SD 57401</value>
</Data>
<Data name='State'>
<value>SD</value>
</Data>
<Data name='Phone'>
<value>605-229-3500</value>
</Data>
<Data name='Zip'>
<value>57401</value>
</Data>
</ExtendedData>
<address>2301 8th Ave. NE, Suite 225 Aberdeen, SD 57401</address>
</Placemark>}
好的,对于遇到此问题的任何其他人,google 可以从地址的 csv 文件创建 KML 文件,但它无法读取它。您必须先将 csv 文件中的地址转换为 lat/long,然后再创建 kml 文件。