这是我编写的代码,通过提供纬度和经度将标记添加到谷歌地图.问题是我得到了一个非常高度缩放的谷歌地图.我已经尝试将缩放级别设置为1,但这对高度缩放的地图没有影响.
<script src="http://maps.google.com/maps/api/js?v=3&sensor=false" type="text/javascript"></script>
<script type="text/javascript">
var icon = new google.maps.MarkerImage("http://maps.google.com/mapfiles/ms/micons/blue.png",new google.maps.Size(32, 32), new google.maps.Point(0, 0),new google.maps.Point(16, 32));
var center = null;
var map = null;
var currentPopup;
var bounds = new google.maps.LatLngBounds();
function addMarker(lat, lng, info) {
var pt = new google.maps.LatLng(lat, lng);
bounds.extend(pt);
var marker = new google.maps.Marker({
position: pt,
icon: icon,
map: map
});
var popup = new google.maps.InfoWindow({
content: info,
maxWidth: 300
});
google.maps.event.addListener(marker, "click", function() {
if (currentPopup != null) {
currentPopup.close();
currentPopup = null; …Run Code Online (Sandbox Code Playgroud) 我想将地图视图缩放到1公里半径,但无法弄清楚如何?
该文档说缩放级别1将地球赤道映射到256像素.那么如何计算我需要设置的缩放级别,以便地图视图显示1KM半径的区域?
更新:
阅读几篇博文后,我写了以下代码:
private int calculateZoomLevel() {
double equatorLength = 6378140; // in meters
double widthInPixels = screenWidth;
double metersPerPixel = equatorLength / 256;
int zoomLevel = 1;
while ((metersPerPixel * widthInPixels) > 2000) {
metersPerPixel /= 2;
++zoomLevel;
}
Log.i("ADNAN", "zoom level = "+zoomLevel);
return zoomLevel;
}
Run Code Online (Sandbox Code Playgroud)
我的想法是,首先我在缩放级别1中计算每像素的米数,根据谷歌显示使用256像素的地球赤道.现在,每个后续缩放级别放大2级,因此每个缩放级别的每个像素的一半.我这样做,直到我有一个缩放级别,每个像素的米乘以屏幕宽度给我小于2000,即2公里跨.
但我不认为我得到的缩放级别显示的是2Km半径的地图.有人可以告诉我这里我做错了什么吗?
我正在尝试将Google地图集中到用户位置,同时考虑到该位置的准确性,提供合理的缩放级别.任何人都可以描述我应该如何计算它?涉及哪些变量,您是如何实现这一目标的?
我想zoom在Google map在英里的半径特定比如说10英里/ 20英里/ 30英里等按我的条件在android系统。
我需要的是从当前经纬度点绘制一个特定半径(10/20/30.. 英里)的圆,并将地图缩放到我已经绘制了带有半径的圆的特定英里。
我能够指出我当前的位置,绘制圆圈。但是我无法将地图缩放到所需的半径英里(圆圈应该以我当前的位置为中心以指定的英里为中心聚焦在屏幕上)。
目前我正在使用以下代码进行缩放:
gooMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(selectedLat, selectedLong), 15));
gooMap.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
Log.e("Circle Lat Long:", selectedLat + ", " + selectedLong);
circle.remove();
circle = gooMap.addCircle(new CircleOptions()
.center(new LatLng(selectedLat, selectedLong))
.radius(iMiles * 1609.34) // Converting Miles into Meters...
.strokeColor(Color.RED)
.strokeWidth(5));
circle.isVisible();
Run Code Online (Sandbox Code Playgroud)
我知道将缩放级别设置为 15 不会将地图缩放到所需的英里数。但我需要缩放地图以达到英里半径。我怎样才能实现它。任何人都可以帮助我。
编辑:-添加的图像详细解释了我需要的内容。Image_1:- 当我将半径设置为 10 英里时,地图应如图所示缩放。Image_2 当我将半径设置为 50 英里时,地图应如图所示缩放。请查看地图位置的差异以分析我需要的缩放级别。
提前致谢。
android google-maps google-maps-api-3 android-maps android-maps-v2