我有以下Javascript,其中包括标准的Google Maps API initialize()函数和自定义addMarker()函数.地图将加载正常,但标记不会添加到地图中.
<script type="text/javascript">
// Standard google maps function
function initialize() {
var myLatlng = new google.maps.LatLng(40.779502, -73.967857);
var myOptions = {
zoom: 12,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}
// Function for adding a marker to the page.
function addMarker(location) {
marker = new google.maps.Marker({
position: location,
map: map
});
}
// Testing the addMarker function
CentralPark = new google.maps.LatLng(37.7699298, -122.4469157);
addMarker(CentralPark);
</script>
Run Code Online (Sandbox Code Playgroud) 我希望能够在调用a后将填充添加到地图视图中map.fitBounds(),因此无论地图控件还是打开时覆盖标记的滑动面板之类的东西都可以看到所有标记.Leaftlet可以选择为fitBounds添加填充,但Google Maps没有.
有时,最北端的标记部分隐藏在视口上方.最西侧的标记通常位于缩放滑块下方.使用API 2,可以通过减少地图视口中的给定填充来形成虚拟视口,然后调用该方法showBounds()来计算并基于该虚拟视口执行缩放和居中:
map.showBounds(bounds, {top:30,right:10,left:50});
Run Code Online (Sandbox Code Playgroud)
本作API 2所述的工作实施例中,可以发现这里的showBounds()的例子链接下.
我在API V3中找不到类似的功能,但希望还有另一种方法可以实现.也许我可以抓住东北和西南点,然后添加假坐标以在包括它们之后进一步扩展边界?
(Codepen以防下面的代码不起作用)
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
draggable: true,
streetViewControl: false,
zoomControl: false
});
var marker1 = new google.maps.Marker({
position: {lat: 37, lng: -121},
map: map,
});
var marker2 = new google.maps.Marker({
position: {lat: 39.3, lng: -122},
map: map,
});
var bounds = new google.maps.LatLngBounds();
bounds.extend(marker1.position);
bounds.extend(marker2.position);
map.fitBounds(bounds);
}Run Code Online (Sandbox Code Playgroud)
#map {
height: 640px;
width: 360px;
} …Run Code Online (Sandbox Code Playgroud)我在Android谷歌地图v2中进行地图聚类.我只想将标记从一个地理点动画到另一个地理点.有没有办法在谷歌地图v2中移动标记?
我是使用Google Maps API在Android内部开发的新手.我已经能够设置地图并测试基本功能,但是我在将文档中显示的逻辑实现到我自己的代码中时遇到了麻烦.
我已经通过谷歌的文档进行了研究和发现,你必须使用地图检查交通数据是否可用:
public final boolean isTrafficEnabled()
Run Code Online (Sandbox Code Playgroud)
然后调用方法:
public final boolean isTrafficEnabled() {
return mMap.isTrafficEnabled();
}
public final void setTrafficEnabled(boolean enabled) {
mMap.setTrafficEnabled(enabled);
}
Run Code Online (Sandbox Code Playgroud)
我不完全确定如何实现这一点,因为我完全不熟悉开发.我在另一个文档源中找到了以下示例:
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var trafficLayer = new google.maps.TrafficLayer();
trafficLayer.setMap(map);
Run Code Online (Sandbox Code Playgroud)
}
google.maps.event.addDomListener(window, 'load', initialize);
Run Code Online (Sandbox Code Playgroud)
但我似乎无法弄清楚如何正确地做到这一点.我是否必须以任何方式编辑清单XML,或者这一切都是从mainActivity完成的吗?这是我的完整活动代码:
package example.testdevice;
import android.app.Dialog;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
public class MainActivity extends FragmentActivity {
private static final int GPS_ERRORDIALOG_REQUEST = 9001;
GoogleMap mMap; …Run Code Online (Sandbox Code Playgroud) 在API v2中,map对象有一个方便的方法getBoundsZoomLevel().我用它来获得最适合边界的缩放级别,然后以某种方式操纵这个最佳缩放级别,最后设置所需的缩放级别.
我在API v3中找不到类似的功能.(从v2转到v3时,这是多么令人沮丧的经历)
我真的必须使用map.fitBounds(),再次map.getZoom()操纵setZoom()吗?那真是太蠢了!
我Google Map API v2在我的应用程序中使用它来显示地图.
我已按照所有步骤进行操作,以便在我的应用程序中启用Google Map.
public class PinLocationOnMapView extends FragmentActivity {
private double mLatitude = 0.0, mLongitude = 0.0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SupportMapFragment fragment = SupportMapFragment.newInstance();
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, fragment).commit();
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用此代码,它会显示我的地图,但如果我提供我的纬度/经度值,地图图块不会加载,我只看到白色图块.
以下是上述类的onCreate()中编写的代码:
if (getIntent().getExtras() != null) {
final Bundle bundle = getIntent().getBundleExtra("LOCATION");
mLatitude = bundle.getDouble("LATITUDE");
mLongitude = bundle.getDouble("LONGITUDE");
} else {
finish();
}
GoogleMapOptions options = new GoogleMapOptions();
LatLng latLng = new LatLng(mLatitude, mLongitude);
CameraPosition cameraPosition;// = new CameraPosition(latLng, 0, 0, 0); …Run Code Online (Sandbox Code Playgroud) android google-maps google-maps-markers google-maps-api-2 supportmapfragment
我正在研究从v2到v3的地图代码迁移.
在v2中,我在GProjection和Overlay的帮助下创建了圆圈,它在所有缩放级别看起来都相同.
在v3中,google给出了Circle类,它将在地图中创建圆形,但它会以不同的缩放级别变化.
我想创建在所有缩放级别具有相同大小的圆.
我想知道谷歌地图v3中的任何其他方式我可以为所有缩放级别创建相同大小的圆.
提前致谢.
谷歌地图上有大约100个标记,还有一个需要可见的特殊标记.目前,当地图缩小时,它周围的标记会将其全部或部分隐藏.我需要将该标记完全可见,并且我认为将其保留在所有其他标记之上应该可以解决问题.但我找不到修改其堆叠顺序(z-index)的方法.
google-maps google-maps-api-3 google-maps-markers google-maps-api-2
在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应用程序.用户在谷歌地图上搜索餐馆.在谷歌地图显示所有邻居的餐厅标记.如果他点击标记,它会显示自定义InfoWindow.我的问题是我无法加载返回谷歌的图像.我正确的图像的网址,但我不能在窗口显示它.
信息窗口
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@color/bg_color" >
<ImageView
android:id="@+id/place_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"" />
<TextView
android:id="@+id/place_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/place_vicinity"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@color/bg_color" >
<RatingBar
android:id="@+id/place_rating"
style="?android:attr/ratingBarStyleSmall"
android:numStars="5"
android:rating="0"
android:isIndicator="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip" />
<ImageView
android:id="@+id/navigate_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:src="@drawable/navigate" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
在创造我有这个
mGoogleMap.setInfoWindowAdapter(new InfoWindowAdapter() {
// Use default InfoWindow frame
@Override
public View getInfoWindow(Marker arg0) {
return null;
}
// Defines the contents of the InfoWindow
@Override
public View …Run Code Online (Sandbox Code Playgroud)