2014-06-16 4 views
0

는 복제, 여기에서 CefSharp을 다운로드하려면 잘라 : https://github.com/cefsharp/CefSharpCEFSharp은 수정 또는 Google지도 V3 API의 지오 주소 데이터

을 그리고 CefSharp.WinForms.Example

이제

브라우저와 내 바이올린을 실행을 실행을 CefSharp 브라우저 : http://jsfiddle.net/bjmL9/

나는 전체 주소를 클릭 데이터 (street_number, 경로, 이웃, 지역, 관리 영역 수준, 관리 영역 수준, 국가, 우편 _ 번호)를 표시하는 경고를 추가했다.

브라우저에 표시된 데이터를 CefSharp 브라우저에 표시된 데이터와 비교하십시오.

문제 : 내 브라우저에서 지역 정보는 "Culiacán Rosales"로 표시되지만 Cef 브라우저에서는 "Culiacán"으로 잘립니다. 멕시코는 Cef가 "멕시코"대신에 "멕시코"(악센트없는)를 표시하면서 이상한 행동을합니다. 이것은 바이올린의 코드입니다

나는이 문제에 구글의 일치와 해결 방법을하는 어떤 아이디어를 얻을 수 없습니다 사촌 CEF 종료의 가장자리에입니다 ... 이후는하지 않습니다 마지막으로 영원히 : 나는 ("멕시코"에서 "로살레스를"누락 악센트) 같은 동작을 볼 수 더

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Google Map</title> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
    <meta charset="utf-8"> 
    <style> 
     html, body, #map-canvas { 
     height: 100%; 
     margin: 0px; 
     padding: 0px 
     } 
    </style> 
    <link href="MapStyle.css" rel="stylesheet" type="text/css" media="all"/> 
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places"></script> 
    <script> 
     var map; 
     var geocoder; 

     function initialize() { 
      var placeMarkers = []; 
      geocoder = new google.maps.Geocoder(); 
      var aquamiller = new google.maps.LatLng(
       24.832956, 
       -107.389775); 

      var mapOptions = { 
       zoom: 16, 
       center: aquamiller, 
      }; 

      map = new google.maps.Map(
       document.getElementById('map-canvas'), 
       mapOptions); 

      createSearchBar(map, placeMarkers); 

      google.maps.event.addListener(
       map, 
       'click', 
       function(e) { 
        getAddress(e.latLng, function(address) { 
         alert(
         address.street_number + ', ' + 
         address.route + ', ' + 
         address.neighborhood + ', ' + 
         address.locality + ', ' + 
         address.administrative_area_level_2 + ', ' + 
         address.administrative_area_level_1 + ', ' + 
         address.country + ', ' + 
         address.postal_code); 
        }); 
       }); 
     } 

     function getAddress(latLng, callBack) 
     { 
      geocoder.geocode({'latLng': latLng}, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       if (results[0]) { 
       var address = {}; 
       var components = results[0].address_components; 
       for (var i = 0 ; i< components.length ; i++) { 
        address[components[i].types[0]] = components[i].long_name; 
       } 
       callBack(address); 
       } 
       else { 
       alert('No results found'); 
       } 
      } 
      else { 
       alert('Geocoder failed due to: ' + status); 
      } 
      }); 
     } 

     function createSearchBar(map, markers) 
     { 
      var input = /** @type {HTMLInputElement} */(document.getElementById('pac-input')); 
      map.controls[google.maps.ControlPosition.TOP_LEFT].push(input); 

      var searchBox = new google.maps.places.SearchBox(/** @type {HTMLInputElement} */(input)); 

      google.maps.event.addListener(searchBox, 'places_changed', function() { 
      var places = searchBox.getPlaces(); 
      console.log(places); 
      for (var i = 0, marker; marker = markers[i]; i++) { 
       marker.setMap(null); 
      } 

      markers = []; 
      var bounds = new google.maps.LatLngBounds(); 
      for (var i = 0, place; place = places[i]; i++) { 
       var image = { 
       url: place.icon, 
       size: new google.maps.Size(71, 71), 
       origin: new google.maps.Point(0, 0), 
       anchor: new google.maps.Point(17, 34), 
       scaledSize: new google.maps.Size(25, 25) 
       }; 

       // Create a marker for each place. 
       var marker = new google.maps.Marker({ 
       map: map, 
       icon: image, 
       title: place.name, 
       position: place.geometry.location 
       }); 

       markers.push(marker); 

       bounds.extend(place.geometry.location); 
       console.log(place.geometry.location); 
      } 
      map.fitBounds(bounds); 
      map.setZoom(16); 
      }); 

      google.maps.event.addListener(map, 'bounds_changed', function() { 
      var bounds = map.getBounds(); 
      searchBox.setBounds(bounds); 
      }); 
     } 

     google.maps.event.addDomListener(window, 'load', initialize); 
    </script> 
    <style> 
     #target { 
     width: 345px; 
     } 
    </style> 
    </head> 
    <body> 
    <input id="pac-input" class="controls" type="text" placeholder="Search Box"> 
    <div id="map-canvas"></div> 
    </body> 
</html> 
+0

CEF 바이너리 다운로드에서'cefclient.exe'를 사용하여 CEF 또는 CefSharp로 분리 할 수 ​​있습니까? 어떤 CefSharp 버전을 사용합니까? – jornh

+0

이 NuGet을 사용하고 있습니다 : http://www.nuget.org/packages/CefSharp.WinForms/ 주로 RegisterJsObject가 winforms의 Google지도와 상호 작용해야하기 때문입니다. – Ziul

+0

바이너리와 그 cefclient.exe는 어디에서 시험 해보고 싶습니까? 이 저장소 : https://github.com/cefsharp/cef-binary – Ziul

답변

0

헤이 (10)

그래서 내 표준 크롬 (35)와 IE 모두 한 번 대기, 어쩌면 그것은이다 누락 된 CEF 언어 팩과 관련된 : https://github.com/cefsharp/cef-binary/tree/cef_binary_1.1364.1123/Release/locales .. NuGet 당신은 아마 단 h as en-US.pak

... 귀하의 바이올린 예제로 조금 더 테스트되었습니다. 설치 과정에서 es.pak를 삭제해도 도움이되지 않았습니다. 그러나지도의 검색 창에서 "Sønderborg, Denmark"를 검색하면 비슷한 결과가 나타납니다. (일부 지역에서는 "S ** o ** nderborg", "ø"없음) 그래서 Google API와 관련된 브라우저가 확실합니까? 같이 language=es와 요구

갱신 :

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&language=es&libraries=places"></script> 

변경합니다 구글의 API의 응답. 현재 내 iPad와 당신의 바이올린을 사용하여 검증되었습니다!

+0

크롬 버전 35.0.1916.153 m, 스페인어 로켈, 지역 및 국가를 사용해 보았습니다. 시도한 Firefox 30.0 스페인어 로켈, 지역 및 국가도 괜찮습니다. 시도한 IE 10.0.9200.16897, 스페인어 로켈도 잘 나타납니다. 그리고 당신은 내 로케일에 대한 맞아, 난 빈 \ 디버그 \ 로케일 \ EN-US.pak은, 내가 그것을 제거하고 거기에 스페인어 로켈을 배치해야?이 작업을 자동으로 CEF를 집어 않습니다있어? – Ziul

+0

난 그냥 =/ – Ziul

+0

그것은 [랭]을해야 할 수도 있습니다 (행운과 함께하지만 es.pak을 배치하려고 http://www.magpcss.org/ceforum/viewtopic.php?f=6&t=11670&p=21027&hilit=Language# p21027) 설정. 'cefclient.exe'로 고립 시키십시오. 또한 CEF 포럼은 더 깊은 지식을 가지고있을 수도 있습니다. – jornh

관련 문제