Android Phonegap:调用marker.setMap(null)时,不会立即删除Google Map标记

时间:2012-10-31 03:13:36

标签: android google-maps cordova google-maps-api-3

当我使用marker.setMap(null)删除标记时,它会一直显示,直到我缩小谷歌地图删除它为止。

使用Windows上的Chrome在同一HTML页面上删除标记后,该标记不可见。

删除标记后,似乎没有正确刷新地图。

问题代码(标记应在5秒后消失):

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <script type="text/javascript" charset="utf-8" src="cordova-2.1.0.js"></script>
    <script type="text/javascript" charset="utf-8" src="jquery-1.8.2.min.js"></script>
    <style type="text/css">
      * {
        -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
          }
      html { height: 100%; }
      body { height: 100%; margin: 0; padding: 0 }
      #map_canvas { height: 100% }
    </style>
    <script type="text/javascript"
      src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAQ7L1PL7pQzSuDfv9kTL_qE4Cp0wy8Oo8&sensor=true">
    </script>
    <script type="text/javascript">
      var theMap = null;
      function initialize() {
        var mapOptions = {
          zoom: 10,
          center: new google.maps.LatLng(37.7749295, -122.4194155),
          disableDefaultUI: true,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        theMap = new google.maps.Map(document.getElementById('map_canvas'),
                                      mapOptions);
        navigator.geolocation.getCurrentPosition(
          function (position) {
            // successfully load position
            var lat = position.coords.latitude;
            var long = position.coords.longitude;
            theMap.setCenter(new google.maps.LatLng(lat, long), 21);
          },
          function (fail) {
                console.error("Failed to load GPS coordinates");
          }
        );
        var marker;
        function addMarker(itemid, lat, lon) {
                marker = new google.maps.Marker({
                        position: new google.maps.LatLng(lat, lon),
                        map: theMap
                });
        }
        addMarker('pokemon', 37.42841, -122.16960);
        setTimeout(function() {marker.setMap(null);}, 5000);
      }


    </script>
  </head>
  <body onload="initialize();">
    <div id="map_canvas" style="width:100%; height:100%; top:0px; z-index: 10"/>
  </body>
</html>

1 个答案:

答案 0 :(得分:3)

我认为,问题就像这里一样:Google Maps API v3 in PhoneGap: markers not drawing properly after move

尝试将optimized:false属性设置为标记:

new google.maps.Marker({
    map: map,
    optimized: false, 
    clickable: true
});

这应该解决它!