我最近切换到Google Maps API V3.我正在编写一个简单的例子来绘制数组中的标记,但是我不知道如何相对于标记自动居中和缩放.
我搜索了网络的高低,包括谷歌自己的文档,但没有找到一个明确的答案.我知道我可以简单地采用坐标的平均值,但是如何相应地设置缩放?
function initialize() {
var myOptions = {
zoom: 10,
center: new google.maps.LatLng(-33.9, 151.2),
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
setMarkers(map, beaches);
}
var beaches = [
['Bondi Beach', -33.890542, 151.274856, 4],
['Coogee Beach', -33.423036, 151.259052, 5],
['Cronulla Beach', -34.028249, 121.157507, 3],
['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
['Maroubra Beach', -33.450198, 151.259302, 1]
];
function setMarkers(map, locations) {
var image = new google.maps.MarkerImage('images/beachflag.png',
new google.maps.Size(20, 32),
new google.maps.Point(0,0),
new google.maps.Point(0, 32));
var shadow = new …Run Code Online (Sandbox Code Playgroud) 在API v2中,map对象有一个方便的方法getBoundsZoomLevel().我用它来获得最适合边界的缩放级别,然后以某种方式操纵这个最佳缩放级别,最后设置所需的缩放级别.
我在API v3中找不到类似的功能.(从v2转到v3时,这是多么令人沮丧的经历)
我真的必须使用map.fitBounds(),再次map.getZoom()操纵setZoom()吗?那真是太蠢了!
在Google maps API v2中,我们国家的地图非常适合700x400px地图,其中包含以下内容:
map.getBoundsZoomLevel(<bounds of our country>)
Run Code Online (Sandbox Code Playgroud)
但是在API v3中,该map.fitBounds()方法不适合在700x400的缩放级别 - 它缩小了一个级别.
这意味着map.fitBounds()计算带有一些"优雅边际"或其他东西.
我该如何影响这个保证金的大小?
我正在使用这个布局的新Android地图V2:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"
map:cameraBearing="270"/>
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用newLatLngBounds(LatLngBounds bounds,int padding)方法来缩放和查看地图中的所有标记,但摄像机方位设置为0.
谷歌开发者文档中的描述说:
public static CameraUpdate newLatLngBounds(LatLngBounds bounds,int padding)(...).返回的CameraUpdate的轴承为0,倾斜度为0.(...)".
如何更改轴承值?
在调用newLatLngBounds之后,我尝试以编程方式设置新轴承,如下所示:
mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100));
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder()
.target(mMap.getCameraPosition().target)
.zoom(mMap.getCameraPosition().zoom)
.bearing(270)
.build()));
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,一些标记将不会显示出来.
我有一个使用谷歌静态地图的JAVA项目,经过几个小时的工作,我无法工作,我会解释一切,我希望有人能够帮助我.
我使用静态地图(480像素x 480像素),地图的中心是lat = 47,lon = 1.5,缩放级别是5.
现在我需要的是当我点击这个静态地图上的一个像素时能够得到lat和lon.经过一些搜索,我发现我应该使用墨卡托投影(对吗?),我还发现每个缩放级别在水平和垂直尺寸上的精度都加倍,但我找不到合适的公式来链接像素,缩放级别和lat/LON ...
我的问题只是关于从像素获取lat/lon,知道中心的坐标和像素以及缩放级别......
先感谢您 !
我试图找到一种方法来确定地图的缩放级别,然后我调用map.fitBounds(),我似乎无法找到方法.
在API v2中有一个方法GMap.getBoundsZoomLevel(bounds:GLatLngBounds),但我在API v3文档中找不到相应的方法.
是否有非谷歌的算法可以预先确定缩放级别?
我使用com.google.android.gms.maps.GoogleMap在SherlockFragmentActivity.
XML代码是这样的:
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="fill_parent"
android:layout_height="150dip" />
Run Code Online (Sandbox Code Playgroud)
int zoomLevel =?//我如何计算两个不同latlong值的缩放级别,因为android map v3需要将缩放级别告诉为int
map.setZoom(zoomLevel);
Run Code Online (Sandbox Code Playgroud)
我有起始值和目标值 com.google.android.gms.maps.model.LatLng
LatLng开始,结束;
我正在添加一个像pligon GoogleLocation.addPolyLineOnGMap(mMap, startPoint, endPoint, startMarker, endMarker)
我的问题是如何计算谷歌地图的缩放级别,以便它可以在地图上适当地显示两个标记.
我现在有一张缩放级别为4的简单地图。缩放级别5对我来说太大了。理想情况下,我希望在iOS SDK for Google Maps中可以达到4.6缩放级别。
有没有办法将缩放级别设置为4.6?我希望地图占据整个页面,因此不能真正放入div并使用该部分。
目的是在中心展示整个美国。
<!DOCTYPE html>
<html>
<head>
<meta content="initial-scale=1.0, user-scalable=no" name="viewport">
<meta charset="utf-8">
<title>Map example</title>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#map {
height: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
var layer;
var layer1;
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 5,
center: {lat: 39.8282, lng: -98.5795}
});
}
</script>
<script async defer src=
"https://maps.googleapis.com/maps/api/js?key=AIzaSyBMtoh9P3UkoxbXndKu_HOP7KsVwTRvxGU&callback=initMap">
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 无论如何将边界和/或中心位置转换为字符串并通过json将其发送到服务器端并存储它?
我问,因为当我尝试将这些东西转换为字符串时; 我从api得到转换错误?