我想展示整个世界的流行地图,并在上面加上标记。
我尝试使用谷歌地图,但似乎(here)它不支持缩小以显示整个世界。
在维基百科(here)上看,地球的中心位于 30°00'N 31°00'E ,但这似乎是在埃及,它并没有看起来像是世界地图的中心,即使在维基百科页面上也是如此:
我也发现了一个类似的问题here,所以我把它转换为Android代码:
MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.mapFragment);
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(final GoogleMap googleMap) {
LatLngBounds allowedBounds = new LatLngBounds(
new LatLng(-85, 180), // bottom right corner
new LatLng(85, -180) // top left corner of map
);
double k = 5.0f;
double n = allowedBounds.northeast.latitude - k;
double e = allowedBounds.northeast.longitude - k;
double s = allowedBounds.southwest.latitude + k;
double w = allowedBounds.southwest.longitude + k;
LatLng neNew = new LatLng(n, e);
LatLng swNew = new LatLng(s, w);
LatLngBounds boundsNew = new LatLngBounds(swNew, neNew);
googleMap.setLatLngBoundsForCameraTarget(boundsNew);
}
});
但它根本不显示整个世界:
我也尝试过使用变焦(看here),但它从未缩小到足以显示大陆:
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(30, 31), 1));
我选择了“1”,因为文档说“1”是“世界”的价值:
以下列表显示了您可以获得的大致详细程度 期望看到每个缩放级别:
1:世界
如何在Google地图上展示整个世界?
或者,有没有什么好的选择只显示世界地图(静态图像也很好),并能够在其上放置标记?甚至可能使用VectorDrawable?
是否有我可以展示的图像,并以某种方式在其上放置标记?
答案 0 :(得分:1)
可以使用MapView
(或MapFragment
)Lite Mode显示整个世界并在其上放置标记:
...如果需要显示 整个视口中,最好使用Lite Mode。
标记位于“部分” Supported Features中:
您可以添加标记并回复 点击事件。您还可以添加自定义标记图标。这是不可能的 使标记可拖动。精简模式地图上的标记是平坦的,并且 它们无法旋转。
此外,您还可以使用其他功能,例如线条和多边形绘制等。
因此,像MainActivity
这样:
public class MainActivity extends AppCompatActivity {
private static final String MAP_VIEW_BUNDLE_KEY = "MapViewBundleKey";
private MapView mMapView;
private GoogleMap mGoogleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bundle mapViewBundle = null;
if (savedInstanceState != null) {
mapViewBundle = savedInstanceState.getBundle(MAP_VIEW_BUNDLE_KEY);
}
mMapView = (MapView) findViewById(R.id.mapview);
mMapView.onCreate(mapViewBundle);
mMapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
mGoogleMap = googleMap;
mGoogleMap.addMarker(new MarkerOptions()
.position(new LatLng(31.755983, 35.212879))
.title("Jerusalem"));
}
});
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Bundle mapViewBundle = outState.getBundle(MAP_VIEW_BUNDLE_KEY);
if (mapViewBundle == null) {
mapViewBundle = new Bundle();
outState.putBundle(MAP_VIEW_BUNDLE_KEY, mapViewBundle);
}
}
}
和activity_main.xml
(也可以通过GoogleMapOptions.liteMode(true)
以编程方式为MapView
设置精简模式):
<com.google.android.gms.maps.MapView android:id="@+id/mapview"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:cameraZoom="1"
map:mapType="normal"
map:liteMode="true"
/>
你有类似的东西:
答案 1 :(得分:0)
您可以在Google Maps Android API中使用Lite Mode查看整个世界。
您可以在其上添加与完整地图模式相同的标记。
答案 2 :(得分:-1)
这是使用Google Static Maps API的可能解决方案。
查询是:
SELECT A.EMPLID, A.BUSINESS_TITLE, A.DEPTID, A.LOCATION, A.LAST_NAME,
A.FIRST_NAME, A.MIDDLE_NAME,
MAX(CONVERT(CHAR(10),D.EXAM_DT,121))AS EXAM_DATE, D.EXAM_TYPE_CD,
(CONVERT(CHAR(10),D.GH_EXPIRE_DATE,121)) AS EXPIRE_DATE, AA.NAME AS
Manager_Name
FROM ((PS_EMPLOYEES A INNER JOIN PS_EMPLMT_SRCH_QRY A1 ON (A.EMPLID =
A1.EMPLID AND A.EMPL_RCD = A1.EMPL_RCD AND A1.OPRID = 'HD065' ))
LEFT OUTER JOIN PS_GHS_HS_PPDSCRN D ON A.EMPLID = D.EMPLID)
--LEFT OUTER JOIN PS_GHS_REPORTS_TO H ON A.EMPLID = H.EMPLID
LEFT OUTER JOIN PS_EMPLOYEES AA ON AA.POSITION_NBR = A.REPORTS_TO
AND (( AA.EFFDT =
(SELECT MAX(A_ED.EFFDT) FROM PS_EMPLOYEES A_ED
WHERE AA.POSITION_NBR = A_ED.POSITION_NBR
AND A_ED.EFFDT <= SUBSTRING(CONVERT(CHAR,GETDATE(),121), 1, 10)) ))
WHERE ( ( A.EFFDT =
(SELECT MAX(A_ED.EFFDT) FROM PS_EMPLOYEES A_ED
WHERE A.EMPLID = A_ED.EMPLID
AND A.EMPL_RCD = A_ED.EMPL_RCD
AND A_ED.EFFDT <= SUBSTRING(CONVERT(CHAR,GETDATE(),121), 1, 10))
AND A.EFFSEQ =
(SELECT MAX(A_ES.EFFSEQ) FROM PS_EMPLOYEES A_ES
WHERE A.EMPLID = A_ES.EMPLID
AND A.EMPL_RCD = A_ES.EMPL_RCD
AND A.EFFDT = A_ES.EFFDT)
AND D.EXAM_TYPE_CD = 'PPD'))
AND A.EMPL_STATUS = 'A'
--AND NOT EXISTS (SELECT D.EMPLID, COUNT(*) AS 'TotalOccur' FROM PS_GHS_HS_PPDSCRN D GROUP BY D.EMPLID HAVING COUNT(*) > 1)
GROUP BY A.EMPLID, A.BUSINESS_TITLE, A.DEPTID, A.LOCATION, A.LAST_NAME,
A.FIRST_NAME, A.MIDDLE_NAME, D.EXAM_TYPE_CD, D.GH_EXPIRE_DATE, AA.NAME
ORDER BY 5
只需使用尺寸参数来测试所需的视图。